# # 将小波卷积和频率融合结合在一起












































# import torch
# import torch.nn as nn
# from WTConv import WTConv  # 从 WTConv.py 导入 WTConv 模块
# from FreqFusion import ALPFGenerator, AHPFGenerator, OffsetGenerator  # 从 FreqFusion.py 导入 FreqFusion 组件
#
# class WTConvFreqFusion(nn.Module):
#     def __init__(self, in_channels, out_channels, reduction_ratio=4, kernel_size=3):
#         """
#         初始化WTConvFreqFusion类，结合WTConv和FreqFusion方法的特征融合。
#
#         参数:
#         - in_channels: 输入特征图的通道数
#         - out_channels: 输出特征图的通道数
#         - reduction_ratio: 通道缩减率，用于控制通道数量
#         - kernel_size: 卷积核大小
#         """
#         super(WTConvFreqFusion, self).__init__()
#         self.in_channels = in_channels
#         self.out_channels = out_channels
#         self.reduction_ratio = reduction_ratio
#         self.kernel_size = kernel_size
#
#         # WTConv 提供的大感受野卷积
#         self.wtconv = WTConv(in_channels, out_channels, kernel_size=kernel_size)
#
#         # FreqFusion 组件：ALPFGenerator 和 AHPFGenerator，用于高低频特征的自适应滤波
#         self.alpf_generator = ALPFGenerator(out_channels // reduction_ratio, kernel_size=kernel_size)
#         self.ahpf_generator = AHPFGenerator(out_channels // reduction_ratio, kernel_size=kernel_size)
#
#         # 偏移生成器，用于进一步优化边界和类内一致性
#         self.offset_generator = OffsetGenerator(out_channels // reduction_ratio)
#
#         # 最终的 1x1 卷积，用于融合 WTConv 和 FreqFusion 的特征
#         self.final_conv = nn.Conv2d(out_channels, out_channels, kernel_size=1)
#
#     def forward(self, x):
#         """
#         前向传播函数，执行WTConv和FreqFusion的结合特征融合操作。
#
#         参数:
#         - x: 输入特征图，尺寸为 (batch_size, in_channels, height, width)
#
#         返回:
#         - output: 融合后的特征图
#         """
#         # 使用 WTConv 提取大感受野特征
#         wtconv_features = self.wtconv(x)
#
#         # 使用 ALPF 和 AHPF 生成自适应的低频和平滑滤波
#         alpf_features = self.alpf_generator(wtconv_features)  # 对低频信息进行平滑
#         ahpf_features = self.ahpf_generator(wtconv_features)  # 对高频信息进行边界增强
#
#         # 使用 Offset Generator 在高低频特征上应用偏移，使得边界更加清晰
#         offset_features = self.offset_generator(alpf_features + ahpf_features)
#
#         # 将 WTConv 提取的大感受野特征与 FreqFusion 的自适应高低频特征融合
#         fusion_features = wtconv_features + offset_features
#
#         # 通过最终的 1x1 卷积进一步处理，得到最终输出
#         output = self.final_conv(fusion_features)
#
#         return output
#
#
# # 测试代码
# if __name__ == "__main__":
#     # 假设输入张量 x 的大小为 (batch_size, in_channels, height, width)
#     x = torch.randn(1, 64, 128, 128)
#     model = WTConvFreqFusion(in_channels=64, out_channels=64, reduction_ratio=4, kernel_size=3)
#     output = model(x)
#     print("Output shape:", output.shape)  # 检查输出的形状
